
function [L,U,P]= LUPermutacion(A)
% Datos
%	-A es una matriz nxn
% Resultado
%	-L es una matriz nxn triangular inferior con 1 en la diagonal principal
%      por lo tanto es la triangular inferior de la permutada.
%	-U es una matriz nxn triangular superior con los elementos de la diagonal principal distintos de cero.
 %  -P es la matriz de permutacion   PA = LU
n=length(A); I = eye(n);
p=1:n,     % vector para hacer el pivotaje ficticio
for i=1:n-1
    [maximo,r]=max(abs(A(p(i:n),i)));r=r+i-1;
    p([i r])=p([r i]);
    for k=i+1:n
       L(p(k),i)=A(p(k),i)/A(p(i),i);
        A(p(k),i:n)=A(p(k),i:n)-L(p(k),i)*A(p(i),i:n);
    end
end
for i=1:n      % Insertamos 1s en la 'diagonal' de L
    L(p(i),i)=1;
end
U=A(p,:);
P = I(p,:);  % matriz de permutacion
L = P*L;